package com.aboo.pub.token;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.aboo.po.AdminUserPO;
import com.aboo.po.MenuPO;

public class AdminLoginToken {
	
	private AdminUserPO adminUserInfo;
	//所有资源（菜单）
	private List<String> menuUrlList;
	//一级菜单列表
	private List<MenuPO> menuOneSetList;
	//二级菜单列表
	private Map<String, List<MenuPO>> menuTwoSetMap;
	
	public void classify(List<MenuPO> rsList) {
		if (rsList != null) {
			menuUrlList = new ArrayList<String>();
			//用户默认权限，否则会陷入死循环
			menuUrlList.add("/admin/frameAction!index.do");
			menuOneSetList = new ArrayList<MenuPO>();
			menuTwoSetMap = new HashMap<String, List<MenuPO>>();
			
			for (int i = 0; i < rsList.size(); i++) {
				MenuPO menu = rsList.get(i);
				menuUrlList.add(menu.getUrl());
				if ("1".equals(menu.getMenuType())) {
					menuOneSetList.add(menu);
					rsList.remove(menu);
					i--;
				}
				if ("3".equals(menu.getMenuType())) {
					rsList.remove(menu);
					i--;
				}
			}
			
			List<MenuPO> tmpList = null;
			for (MenuPO pMenu : menuOneSetList) {
				tmpList = new ArrayList<MenuPO>();
				for (int i = 0; i < rsList.size(); i++) {
					MenuPO menu = rsList.get(i);
					if ("2".equals(menu.getMenuType()) && pMenu.getId().intValue() == menu.getParentId().intValue()) {
						tmpList.add(menu);
						rsList.remove(menu);
						i--;
					}
				}
				menuTwoSetMap.put(pMenu.getId().toString(), tmpList);
			}
		}
	}
	
	public boolean containUrl(String url) {
		if (menuUrlList != null) {
			for (String str : menuUrlList) {
				if (url.indexOf(str) > -1) {
					return true;
				}
			}
		}
		return false;
	}

	public AdminUserPO getAdminUserInfo() {
		return adminUserInfo;
	}

	public void setAdminUserInfo(AdminUserPO adminUserInfo) {
		this.adminUserInfo = adminUserInfo;
	}

	public List<String> getMenuUrlList() {
		return menuUrlList;
	}

	public void setMenuUrlList(List<String> menuUrlList) {
		this.menuUrlList = menuUrlList;
	}

	public List<MenuPO> getMenuOneSetList() {
		return menuOneSetList;
	}

	public void setMenuOneSetList(List<MenuPO> menuOneSetList) {
		this.menuOneSetList = menuOneSetList;
	}

	public Map<String, List<MenuPO>> getMenuTwoSetMap() {
		return menuTwoSetMap;
	}

	public void setMenuTwoSetMap(Map<String, List<MenuPO>> menuTwoSetMap) {
		this.menuTwoSetMap = menuTwoSetMap;
	}

}
